package study1;

public class GetNodesTest {
    public static void main(String[] args) {
        // 1. 创建测试对象和二叉树
        GetNodes getNodes = new GetNodes();
        GetNodes.TreeNode root = getNodes.createTree(); // 构建固定结构的二叉树

        // 2. 测试方法1：先序遍历计数
        getNodes.getNodeSize1(root); // 调用计数方法（结果存储在成员变量 nodeSize 中）
        System.out.println("方法1统计结果: " + getNodes.nodeSize); // 输出：7

        // 3. 测试方法2：分治递归
        int size = getNodes.getNodeSize2(root); // 直接返回结果
        System.out.println("方法2统计结果: " + size); // 输出：7

        // 4. 边界测试：空树
        System.out.println("\n空树测试:");
        getNodes.getNodeSize1(null);
        System.out.println("方法1结果: " + getNodes.nodeSize); // 输出：0
        System.out.println("方法2结果: " + getNodes.getNodeSize2(null)); // 输出：0

        System.out.println("二叉树结构图示:");
        System.out.println("      A");
        System.out.println("     / \\");
        System.out.println("    B   C");
        System.out.println("   / \\ / \\");
        System.out.println("  D  E F  G");
    }
}